/**
 * <copyright>
 * </copyright>
 *

 */
package com.ldh.mod4j.businessdomain.businessDomainDsl;

import org.eclipse.emf.ecore.EObject;

/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Association</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * <ul>
 *   <li>{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getDescription <em>Description</em>}</li>
 *   <li>{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getSource <em>Source</em>}</li>
 *   <li>{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getSourceRoleName <em>Source Role Name</em>}</li>
 *   <li>{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getSourceMultiplicity <em>Source Multiplicity</em>}</li>
 *   <li>{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#isBidirectional <em>Bidirectional</em>}</li>
 *   <li>{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getTargetMultiplicity <em>Target Multiplicity</em>}</li>
 *   <li>{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getTarget <em>Target</em>}</li>
 *   <li>{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getTargetRoleName <em>Target Role Name</em>}</li>
 *   <li>{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#isOrdered <em>Ordered</em>}</li>
 * </ul>
 * </p>
 *
 * @see com.ldh.mod4j.businessdomain.businessDomainDsl.BusinessDomainDslPackage#getAssociation()
 * @model
 * @generated
 */
public interface Association extends EObject
{
  /**
   * Returns the value of the '<em><b>Description</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Description</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Description</em>' attribute.
   * @see #setDescription(String)
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.BusinessDomainDslPackage#getAssociation_Description()
   * @model
   * @generated
   */
  String getDescription();

  /**
   * Sets the value of the '{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getDescription <em>Description</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Description</em>' attribute.
   * @see #getDescription()
   * @generated
   */
  void setDescription(String value);

  /**
   * Returns the value of the '<em><b>Source</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Source</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Source</em>' reference.
   * @see #setSource(BusinessClass)
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.BusinessDomainDslPackage#getAssociation_Source()
   * @model
   * @generated
   */
  BusinessClass getSource();

  /**
   * Sets the value of the '{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getSource <em>Source</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Source</em>' reference.
   * @see #getSource()
   * @generated
   */
  void setSource(BusinessClass value);

  /**
   * Returns the value of the '<em><b>Source Role Name</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Source Role Name</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Source Role Name</em>' attribute.
   * @see #setSourceRoleName(String)
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.BusinessDomainDslPackage#getAssociation_SourceRoleName()
   * @model
   * @generated
   */
  String getSourceRoleName();

  /**
   * Sets the value of the '{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getSourceRoleName <em>Source Role Name</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Source Role Name</em>' attribute.
   * @see #getSourceRoleName()
   * @generated
   */
  void setSourceRoleName(String value);

  /**
   * Returns the value of the '<em><b>Source Multiplicity</b></em>' attribute.
   * The literals are from the enumeration {@link com.ldh.mod4j.businessdomain.businessDomainDsl.Multiplicity}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Source Multiplicity</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Source Multiplicity</em>' attribute.
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.Multiplicity
   * @see #setSourceMultiplicity(Multiplicity)
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.BusinessDomainDslPackage#getAssociation_SourceMultiplicity()
   * @model
   * @generated
   */
  Multiplicity getSourceMultiplicity();

  /**
   * Sets the value of the '{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getSourceMultiplicity <em>Source Multiplicity</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Source Multiplicity</em>' attribute.
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.Multiplicity
   * @see #getSourceMultiplicity()
   * @generated
   */
  void setSourceMultiplicity(Multiplicity value);

  /**
   * Returns the value of the '<em><b>Bidirectional</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Bidirectional</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Bidirectional</em>' attribute.
   * @see #setBidirectional(boolean)
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.BusinessDomainDslPackage#getAssociation_Bidirectional()
   * @model
   * @generated
   */
  boolean isBidirectional();

  /**
   * Sets the value of the '{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#isBidirectional <em>Bidirectional</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Bidirectional</em>' attribute.
   * @see #isBidirectional()
   * @generated
   */
  void setBidirectional(boolean value);

  /**
   * Returns the value of the '<em><b>Target Multiplicity</b></em>' attribute.
   * The literals are from the enumeration {@link com.ldh.mod4j.businessdomain.businessDomainDsl.Multiplicity}.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Target Multiplicity</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Target Multiplicity</em>' attribute.
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.Multiplicity
   * @see #setTargetMultiplicity(Multiplicity)
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.BusinessDomainDslPackage#getAssociation_TargetMultiplicity()
   * @model
   * @generated
   */
  Multiplicity getTargetMultiplicity();

  /**
   * Sets the value of the '{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getTargetMultiplicity <em>Target Multiplicity</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Target Multiplicity</em>' attribute.
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.Multiplicity
   * @see #getTargetMultiplicity()
   * @generated
   */
  void setTargetMultiplicity(Multiplicity value);

  /**
   * Returns the value of the '<em><b>Target</b></em>' reference.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Target</em>' reference isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Target</em>' reference.
   * @see #setTarget(BusinessClass)
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.BusinessDomainDslPackage#getAssociation_Target()
   * @model
   * @generated
   */
  BusinessClass getTarget();

  /**
   * Sets the value of the '{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getTarget <em>Target</em>}' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Target</em>' reference.
   * @see #getTarget()
   * @generated
   */
  void setTarget(BusinessClass value);

  /**
   * Returns the value of the '<em><b>Target Role Name</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Target Role Name</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Target Role Name</em>' attribute.
   * @see #setTargetRoleName(String)
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.BusinessDomainDslPackage#getAssociation_TargetRoleName()
   * @model
   * @generated
   */
  String getTargetRoleName();

  /**
   * Sets the value of the '{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#getTargetRoleName <em>Target Role Name</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Target Role Name</em>' attribute.
   * @see #getTargetRoleName()
   * @generated
   */
  void setTargetRoleName(String value);

  /**
   * Returns the value of the '<em><b>Ordered</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <p>
   * If the meaning of the '<em>Ordered</em>' attribute isn't clear,
   * there really should be more of a description here...
   * </p>
   * <!-- end-user-doc -->
   * @return the value of the '<em>Ordered</em>' attribute.
   * @see #setOrdered(boolean)
   * @see com.ldh.mod4j.businessdomain.businessDomainDsl.BusinessDomainDslPackage#getAssociation_Ordered()
   * @model
   * @generated
   */
  boolean isOrdered();

  /**
   * Sets the value of the '{@link com.ldh.mod4j.businessdomain.businessDomainDsl.Association#isOrdered <em>Ordered</em>}' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   * @param value the new value of the '<em>Ordered</em>' attribute.
   * @see #isOrdered()
   * @generated
   */
  void setOrdered(boolean value);

} // Association
